<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AngelScript: weakref</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectlogo"><img alt="Logo" src="aslogo_small.png"/></td>
  <td id="projectalign">
   <div id="projectname">AngelScript
   </div>
  </td>
    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('doc_datatypes_weakref.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div><div class="header">
  <div class="headertitle"><div class="title">weakref </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="section note"><dt>Note</dt><dd><code>weakref</code> is only available in the scripts if the application <a class="el" href="doc_addon_weakref.html">registers the support for it</a>.</dd></dl>
<p>An object handle will keep the object it refers to alive as long as the handle itself exists. A <code>weakref</code> object can be used in place of the handle where the reference to the object is needed but the object shouldn't be kept alive.</p>
<pre>
  class MyClass {}
  MyClass @obj1 = MyClass();

  // Keep a weakref to the object
  weakref&lt;MyClass&gt; r1(obj1);

  // Keep a weakref to a readonly object
  const_weakref&lt;MyClass&gt; r2(obj1);

  // As long as there is a strong reference to the object, 
  // the weakref will be able to return a handle to the object
  MyClass @obj2 = r1.get();
  assert( obj2 !is null );

  // After all strong references are removed the
  // weakref will only return null
  @obj1 = null;
  @obj2 = null;

  const MyClass @obj3 = r2.get();
  assert( obj3 is null );
</pre><h1><a class="anchor" id="doc_datatypes_weakref_addon"></a>
Supporting weakref object</h1>
<h2><a class="anchor" id="doc_datatypes_weakref_addon_construct"></a>
Constructors</h2>
<p><b>weakref&lt;T&gt;</b>()<br  />
 <b>weakref&lt;T&gt;</b>(T@) explicit<br  />
 <b>const_weakref&lt;T&gt;</b>()<br  />
 <b>const_weakref&lt;T&gt;</b>(const T@) explicit<br  />
</p>
<h2><a class="anchor" id="doc_datatypes_weakref_addon_ops"></a>
Operators</h2>
<p><b>@= handle assignment</b><br  />
</p>
<p>The handle assignment operator is used to set the object that the referred to by the ref type.</p>
<p><b>= value assignment</b><br  />
</p>
<p>The value assignment operator is used when one weakref object is copied to another.</p>
<p><b>is, !is identity operator</b><br  />
</p>
<p>The identity operators are used to compare the address of the object referred to by the ref type.</p>
<p><b>cast&lt;type&gt; implicit cast operator</b><br  />
</p>
<p>The implicit cast operator is used to cast the weak ref type to strong reference of the type. If the object referred to by the weakref is already dead this operator will return null.</p>
<h2><a class="anchor" id="doc_datatypes_weakref_addon_mthd"></a>
Methods</h2>
<p><b>T@ get() const</b><br  />
</p>
<p>This does the exact same thing as the implicit cast operator. It is just a more explicit way of writing it. </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Sun May 21 2023 10:12:40 for AngelScript by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
  </ul>
</div>
</body>
</html>
